package com.qiusuo0226.core.pojo.query;

import com.qiusuo0226.platform.annotation.valid.ValidType;
import com.qiusuo0226.common.util.BeanContext;
import com.qiusuo0226.common.util.ConvertTool;
import com.qiusuo0226.security.config.SecurityProperty;
import com.qiusuo0226.security.util.AesTool;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import javax.validation.constraints.NotBlank;

/**
 * 登录 接口入参绑定对象
 * @author qiusuo
 * @date 2023/6/23 15:25
 */
@Data
@Slf4j
public class LoginBean {
    /**
     * 登录账号
     */
    @NotBlank(message = "account入参不能为空")
    private String account;

    /**
     * 登录密码
     */
    private String pwd;

    /**
     * 登录类型
     * type=1 账号密码登录，type=2 邮箱验证码登录，type=3 手机验证码登录
     */
    @ValidType(types = {"1","2","3"}, message = "登录类型错误")
    private String type;

    /**
     * todo 属性解密
     */
    public void decrypt() throws Exception {
        SecurityProperty property = BeanContext.getBean(SecurityProperty.class);


        if (StringUtils.isNotBlank(account)) {
            account = AesTool.decryptECB(ConvertTool.base64DecodeToBytes(account), ConvertTool.hexToBytes(property.getAesKey()));
        }

        if (StringUtils.isNotBlank(pwd)) {
            pwd = AesTool.decryptECB(ConvertTool.base64DecodeToBytes(pwd), ConvertTool.hexToBytes(property.getAesKey()));
        }
    }
}
